<script>

    let obj = {
        name: "zs",
        age: 18,
        sex: "女"
    }

    let obj1 = {
        name: 'ls',
        age: 28,
        sex: "男"
    }

    /*  // 1、给对象部署Symbol.iterator 方法
     obj[Symbol.iterator]=function(){
 
        let arr= Object.values(obj)
     //    console.log(arr);// ['zs', 18, '女']
 
        let  index=0
 
 
         // 2、返回一个指针对象
         return {
 
             //3、给指针对象添加一个next方法
             next(){
 
                 // 4、根据条件 判断 什么时候结束
                 if(index<arr.length){
                     return {  value: arr[index++],done:false}
                 }else{
                     return {  value: arr[index++],done:true}
                 }
             }
         }
     } */


    // 1、给对象部署Symbol.iterator 方法
    Object.prototype[Symbol.iterator]=function(){

        // 构造函数中的this，指向的是实例化的对象
        let arr = Object.values(this) // 收集所有的value
        let index = 0 // 初始下标


        // 2、返回一个指针对象
        return {

            //3、给指针对象添加一个next方法
            next() {

                // 4、根据条件 判断 什么时候结束
                if (index < arr.length) {
                    return { value: arr[index++], done: false }
                } else {
                    return { value: arr[index++], done: true }
                }
            }
        }
    }
    



    // -----------------------------
    let ite = obj[Symbol.iterator]()
    console.log(ite);


    console.log(ite.next());
    console.log(ite.next());
    console.log(ite.next());
    console.log(ite.next());
    console.log(ite.next());
    console.log(ite.next());



    console.log(obj);
    for (let v of obj) {
        console.log(v);
    }

    for (let v of obj1) {
        console.log(v);
    }




</script>